#include <Node.hpp>
#include <Polygon.hpp>
#include <map>

#ifndef _CLASSMODELINGMESH_
#define _CLASSMODELINGMESH_

namespace Modeling {

class Mesh : public Modeling::Node
{
public:
	virtual ~Mesh();
	Mesh();
	Mesh(std::string name);

	int type();
	virtual void animate(unsigned int frame);

	unsigned int getVertQty();
	Vector3f* addVertex(Vector3f vertex);
	Vector3f* getVertex(unsigned int index);

	unsigned int getMapCoordsQty();
	Vector2f* addMapCoord(Vector2f mapCoord);
	Vector2f* getMapCoord(unsigned int index);

	unsigned int getPolygonsQty();
	virtual Modeling::Polygon* addPolygon();
	virtual Modeling::Polygon* addPolygon(Vector3f* v1, Vector3f* v2, Vector3f* v3);
	virtual Modeling::Polygon* getPolygon(unsigned int index);

protected:
	std::vector< Vector3f* > vertex;
	std::vector< Vector2f* > mapCoord;
	std::vector< Modeling::Polygon* > polygon;

};

}// namespace Modeling

#endif
